1. Field of the Invention
The present invention relates to the design of computer systems that support references to objects defined within an object-oriented programming system. More specifically, the present invention relates to a method and an apparatus for supporting directory-based cache coherence in an object-addressed memory hierarchy.
2. Related Art
As object-oriented programming languages become more widely used, computer systems are being designed to manipulate objects more efficiently. In particular, some proposed object-addressed memory hierarchies include object-addressed caches that facilitate lookups based on location-independent object identifiers (OIDs) without having to first translate the OIDs into corresponding physical addresses.
Some object-addressed caches allow physically-addressed cache lines to coexist with object-addressed cache lines. This can be accomplished by encoding object addresses so that they fall within unused portions of the physical address space.
However, these object-addressed caches can complicate the design of cache-coherence mechanisms. The encoding of object addresses into the physical address space works well as a basis for coherence in broadcast bus-based systems. In these systems, a translator can intercept these object addresses before they reach physical memory. Note that there is no corresponding physical memory location for encoded object addresses.
In contrast, a system that uses a directory-based cache coherence mechanism operates differently. In these systems, a memory controller typically stores meta-information, such as the location of the cache line's current owner, alongside the contents of the physical cache lines. This meta-information can be used during the coherence protocol. For example, it can be used to forward a read request to whichever cache is the current owner of the cache line. Essentially, the memory is consulted before the system determines that the request cannot be satisfied from another cache. This presents a problem for object-addressed memory systems because object cache lines have no associated memory location in which to store the directory information.
Hence, what is needed is a method and an apparatus that provides support for directory-based cache coherence in an object-addressed memory hierarchy.